package com.witmore.skyline.web.service.third.yjx.dto;

import lombok.Data;

@Data
public class ApiResponse<T> {

    /**
     * 是否成功
     */
    private boolean success;

    /**
     * 状态码
     */
    private int code;

    /**
     * 消息
     */
    private String message;

    /**
     * 开发消息
     */
    private String devMsg;

    /**
     * 结果
     */
    private T result;

    /**
     * 分页信息（支持分页接口的对象类型，不带分页的接口此字段为null）
     */
    private PageInfo page;

    // 无参构造函数
    public ApiResponse() {
    }

    /**
     * 分页信息
     */
    @Data
    public static class PageInfo {
        /**
         * 页码（云机械返回值从0开始，但请求参数从1开始）
         */
        private Integer pageNumber;
        
        /**
         * 每页大小
         */
        private Integer pageSize;
        
        /**
         * 总数据量
         */
        private Long totalElements;
        
        /**
         * 总页数
         */
        private Integer totalPages;
        
        /**
         * 是否最后一页
         */
        private Boolean last;
        
        /**
         * 是否第一页
         */
        private Boolean first;
        
        /**
         * 当前页元素数量
         */
        private Integer numberOfElements;
        
        /**
         * 每页大小
         */
        private Integer size;
        
        /**
         * 当前页码
         */
        private Integer number;
    }

    /**
     * toString 方法
     * @return
     */
    @Override
    public String toString() {
        return "ApiResponse{" +
                "success=" + success +
                ", code=" + code +
                ", message='" + message + '\'' +
                ", devMsg='" + devMsg + '\'' +
                ", result='" + result + '\'' +
                ", page=" + page +
                '}';
    }
}